package annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**l'annotazione indica alla JVM che, data un costruttore di una
 * classe, esso e' il costruttore che il mapeditor deve utilizzare
 * per costruire un oggetto caricato dal ClassLoader.
 * <p>ipotizziamo di voler costruire il Renderer "Bee.class". A meno che
 * tale classe abbia un costruttore vuoto, per costruire la classe Bee servir� che
 * qualcuno <strong>scelga un costruttore e i suoi parametri</strong>: questo
 * puo' essere fatto tramite il JConstructorDialog. Tuttavia cio' che il Dialog
 * non puo' sapere e' il significato dei parametri da inserire.
 * <p>Questa annotation descrive dunque il significato di un parametro; per descrivere
 * l'intero costruttore bastera' inserire tante annotazione sul costruttore quanti
 * sono i parametri!
 * <p>Ora affinche' la finestra possa distinguere i vari parametri l'annotazione comprende:
 * <ul>
 *  <li>{@link #description()}: la descrizione del parametro</li>
 *  <li>{@link #type()}: il tipo del parametro</li>
 * </ul>
 * 
 * @author Koldar
 * @version 1.2
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(value=ElementType.CONSTRUCTOR)
public @interface ParameterDescriptor {

	/**rapppresenta la descrizione del parametro da annotare*/
	String description();	
	/**rappresenta il tipo del parametro da annotare*/
	ParameterType type();
	
}
